minus(x, y) → cond(equal(min(x, y), y), x, y)
cond(true, x, y) → s(minus(x, s(y)))
min(0, v) → 0
min(u, 0) → 0
min(s(u), s(v)) → s(min(u, v))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
↳ QTRS
↳ Overlay + Local Confluence
minus(x, y) → cond(equal(min(x, y), y), x, y)
cond(true, x, y) → s(minus(x, s(y)))
min(0, v) → 0
min(u, 0) → 0
min(s(u), s(v)) → s(min(u, v))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
minus(x, y) → cond(equal(min(x, y), y), x, y)
cond(true, x, y) → s(minus(x, s(y)))
min(0, v) → 0
min(u, 0) → 0
min(s(u), s(v)) → s(min(u, v))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
minus(x0, x1)
cond(true, x0, x1)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
MINUS(x, y) → MIN(x, y)
EQUAL(s(x), s(y)) → EQUAL(x, y)
MIN(s(u), s(v)) → MIN(u, v)
COND(true, x, y) → MINUS(x, s(y))
MINUS(x, y) → EQUAL(min(x, y), y)
MINUS(x, y) → COND(equal(min(x, y), y), x, y)
minus(x, y) → cond(equal(min(x, y), y), x, y)
cond(true, x, y) → s(minus(x, s(y)))
min(0, v) → 0
min(u, 0) → 0
min(s(u), s(v)) → s(min(u, v))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
minus(x0, x1)
cond(true, x0, x1)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
MINUS(x, y) → MIN(x, y)
EQUAL(s(x), s(y)) → EQUAL(x, y)
MIN(s(u), s(v)) → MIN(u, v)
COND(true, x, y) → MINUS(x, s(y))
MINUS(x, y) → EQUAL(min(x, y), y)
MINUS(x, y) → COND(equal(min(x, y), y), x, y)
minus(x, y) → cond(equal(min(x, y), y), x, y)
cond(true, x, y) → s(minus(x, s(y)))
min(0, v) → 0
min(u, 0) → 0
min(s(u), s(v)) → s(min(u, v))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
minus(x0, x1)
cond(true, x0, x1)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
EQUAL(s(x), s(y)) → EQUAL(x, y)
minus(x, y) → cond(equal(min(x, y), y), x, y)
cond(true, x, y) → s(minus(x, s(y)))
min(0, v) → 0
min(u, 0) → 0
min(s(u), s(v)) → s(min(u, v))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
minus(x0, x1)
cond(true, x0, x1)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
EQUAL(s(x), s(y)) → EQUAL(x, y)
minus(x0, x1)
cond(true, x0, x1)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
minus(x0, x1)
cond(true, x0, x1)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
EQUAL(s(x), s(y)) → EQUAL(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
MIN(s(u), s(v)) → MIN(u, v)
minus(x, y) → cond(equal(min(x, y), y), x, y)
cond(true, x, y) → s(minus(x, s(y)))
min(0, v) → 0
min(u, 0) → 0
min(s(u), s(v)) → s(min(u, v))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
minus(x0, x1)
cond(true, x0, x1)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
MIN(s(u), s(v)) → MIN(u, v)
minus(x0, x1)
cond(true, x0, x1)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
minus(x0, x1)
cond(true, x0, x1)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
MIN(s(u), s(v)) → MIN(u, v)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
COND(true, x, y) → MINUS(x, s(y))
MINUS(x, y) → COND(equal(min(x, y), y), x, y)
minus(x, y) → cond(equal(min(x, y), y), x, y)
cond(true, x, y) → s(minus(x, s(y)))
min(0, v) → 0
min(u, 0) → 0
min(s(u), s(v)) → s(min(u, v))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
minus(x0, x1)
cond(true, x0, x1)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
COND(true, x, y) → MINUS(x, s(y))
MINUS(x, y) → COND(equal(min(x, y), y), x, y)
min(0, v) → 0
min(u, 0) → 0
min(s(u), s(v)) → s(min(u, v))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
minus(x0, x1)
cond(true, x0, x1)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
minus(x0, x1)
cond(true, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
COND(true, x, y) → MINUS(x, s(y))
MINUS(x, y) → COND(equal(min(x, y), y), x, y)
min(0, v) → 0
min(u, 0) → 0
min(s(u), s(v)) → s(min(u, v))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
(1) (COND(equal(min(x2, x3), x3), x2, x3)=COND(true, x4, x5) ⇒ COND(true, x4, x5)≥MINUS(x4, s(x5)))
(2) (min(x2, x3)=x12∧equal(x12, x3)=true ⇒ COND(true, x2, x3)≥MINUS(x2, s(x3)))
(3) (true=true∧min(x2, 0)=0 ⇒ COND(true, x2, 0)≥MINUS(x2, s(0)))
(4) (equal(x15, x16)=true∧min(x2, s(x16))=s(x15)∧(∀x17:equal(x15, x16)=true∧min(x17, x16)=x15 ⇒ COND(true, x17, x16)≥MINUS(x17, s(x16))) ⇒ COND(true, x2, s(x16))≥MINUS(x2, s(s(x16))))
(5) (0=x18∧min(x2, x18)=0 ⇒ COND(true, x2, 0)≥MINUS(x2, s(0)))
(6) (equal(x15, x16)=true∧s(x16)=x23∧min(x2, x23)=s(x15)∧(∀x17:equal(x15, x16)=true∧min(x17, x16)=x15 ⇒ COND(true, x17, x16)≥MINUS(x17, s(x16))) ⇒ COND(true, x2, s(x16))≥MINUS(x2, s(s(x16))))
(7) (0=0∧0=x19 ⇒ COND(true, 0, 0)≥MINUS(0, s(0)))
(8) (0=0∧0=0 ⇒ COND(true, x20, 0)≥MINUS(x20, s(0)))
(9) (COND(true, 0, 0)≥MINUS(0, s(0)))
(10) (COND(true, x20, 0)≥MINUS(x20, s(0)))
(11) (s(min(x26, x27))=s(x15)∧equal(x15, x16)=true∧s(x16)=s(x27)∧(∀x17:equal(x15, x16)=true∧min(x17, x16)=x15 ⇒ COND(true, x17, x16)≥MINUS(x17, s(x16)))∧(∀x28,x29,x30:min(x26, x27)=s(x28)∧equal(x28, x29)=true∧s(x29)=x27∧(∀x30:equal(x28, x29)=true∧min(x30, x29)=x28 ⇒ COND(true, x30, x29)≥MINUS(x30, s(x29))) ⇒ COND(true, x26, s(x29))≥MINUS(x26, s(s(x29)))) ⇒ COND(true, s(x26), s(x16))≥MINUS(s(x26), s(s(x16))))
(12) (min(x26, x27)=x15∧equal(x15, x27)=true∧(∀x17:equal(x15, x27)=true∧min(x17, x27)=x15 ⇒ COND(true, x17, x27)≥MINUS(x17, s(x27)))∧(∀x28,x29,x30:min(x26, x27)=s(x28)∧equal(x28, x29)=true∧s(x29)=x27∧(∀x30:equal(x28, x29)=true∧min(x30, x29)=x28 ⇒ COND(true, x30, x29)≥MINUS(x30, s(x29))) ⇒ COND(true, x26, s(x29))≥MINUS(x26, s(s(x29)))) ⇒ COND(true, s(x26), s(x27))≥MINUS(s(x26), s(s(x27))))
(13) (COND(true, x26, x27)≥MINUS(x26, s(x27))∧(∀x28,x29,x30:min(x26, x27)=s(x28)∧equal(x28, x29)=true∧s(x29)=x27∧(∀x30:equal(x28, x29)=true∧min(x30, x29)=x28 ⇒ COND(true, x30, x29)≥MINUS(x30, s(x29))) ⇒ COND(true, x26, s(x29))≥MINUS(x26, s(s(x29)))) ⇒ COND(true, s(x26), s(x27))≥MINUS(s(x26), s(s(x27))))
(14) (COND(true, x26, x27)≥MINUS(x26, s(x27)) ⇒ COND(true, s(x26), s(x27))≥MINUS(s(x26), s(s(x27))))
(15) (MINUS(x6, s(x7))=MINUS(x8, x9) ⇒ MINUS(x8, x9)≥COND(equal(min(x8, x9), x9), x8, x9))
(16) (MINUS(x6, s(x7))≥COND(equal(min(x6, s(x7)), s(x7)), x6, s(x7)))
POL(0) = 1
POL(COND(x1, x2, x3)) = -1 - x1 + x2 - x3
POL(MINUS(x1, x2)) = -1 + x1 - x2
POL(c) = -2
POL(equal(x1, x2)) = 0
POL(false) = 0
POL(min(x1, x2)) = 0
POL(s(x1)) = 1 + x1
POL(true) = 0
The following pairs are in Pbound:
COND(true, x, y) → MINUS(x, s(y))
The following rules are usable:
COND(true, x, y) → MINUS(x, s(y))
true → equal(0, 0)
false → equal(s(x), 0)
false → equal(0, s(y))
equal(x, y) → equal(s(x), s(y))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ DependencyGraphProof
MINUS(x, y) → COND(equal(min(x, y), y), x, y)
min(0, v) → 0
min(u, 0) → 0
min(s(u), s(v)) → s(min(u, v))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
min(0, x0)
min(x0, 0)
min(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))